<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./lib/vue.min-2.6.11.js"></script>
    <style>
        body {
            height: 2000px;
        }

        .inner {
            height: 150px;
            background-color: skyblue;
        }

        .box {
            padding: 50px;
            background-color: red;
        }
    </style>
</head>

<body>
    <div id="app">
        <div class="inner" @click="innerClick">
            <p>事件的 修饰 .stop; .stop 修饰事件类型可以 阻止事件冒泡行为</p>
            <input type="button" value="戳我" @cliack.stop="btnClick">
        </div>
        <!-- .prevent 可以修饰事件 阻止标签的默认事件的响应 -->
        <a href="http://www.zxyi.cn" @click.prevent="linkClick">点击这个网站</a>
        <!-- .capture  -->
        <div class="inner" @click.capture="innerClick">
            <p>事件的 修饰 .capture; .capture 可以将 事件的响应转换成捕获阶段的行为 </p>
            <input type="button" value="你戳我啊" @click="btnClick">
        </div>

        <!-- .self -->
        <div class="inner" @click.self="innerClick">
            <p>事件的 修饰 .self; .self 修饰表示 只有 事件直接触发到当前对象身上，那么才会响应事件 </p>
            <input type="button" value="你戳我啊" @click="btnClick">
        </div>

        <!-- .once 当前事件只能 触发一次-->
        <a href="http://www.zxyi.cn" @click.prevent.once="linkClick">点击这个网站 once </a>

        <hr>
        <!-- -------------------------- 
            .stop 与 .elf 对比
            .stop 阻止事件的冒泡行为
            .self 指关注自身事件， 只有直接触发到 自身时 才会响应事件， 其他行为不会 有任何影响（不会影响事件的 捕获或者冒泡行为）
            --------------------------------------------- -->
        <div class="box" @click="boxClick">
            <div class="inner" @click.self="innerClick">
                <p>事件的 修饰 .self; .self 修饰表示 只有 事件直接触发到当前对象身上，那么才会响应事件 </p>
                <input type="button" value="你戳我啊" @click="btnClick">
            </div>
        </div>

        <div class="box" @click="boxClick">
            <div class="inner" @click="innerClick">
                <p>事件的 修饰 .stop; .stop 修饰事件类型可以 阻止事件冒泡行为 </p>
                <input type="button" value="你戳我啊" @click.stop="btnClick">
            </div>
        </div>
    </div>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {},
            methods: {
                //inner div 点击事件
                innerClick: function () {
                    alert('innerClick被点击了')
                },
                // a 链接点击事件
                linkClick() {
                    alert('link 被点击了')
                },
                // button 点击事件
                btnClick() {
                    alert('btnClick 被点击了 ')
                },
                 // box 点击事件
                 boxClick() {
                    alert('boxClick 被点击了')
                }
            }
            
        })
    </script>
</body>

</html>